/**
    经典八数码问题
**/
#include<iostream>
#include<iomanip>
#include<queue>
#include<set>
using namespace std;

struct Status {
    /* data */
    int a[4][4];
    int x, y, step;
}st, ed;

queue<Status> q;
set<int> cantor;
int dx[4] = {0,0,1,-1};
int dy[4] = {1,-1,0,0};

int Cantor(int *a, int len) {
    int ans = 0;
    for(int i=0; i<len; i++) {
        int count = 0, index = 1, f = 1;
        for(int j=i+1; j<len; j++) {
            if(a[j]<a[i])   count++;
            f *= index;
            index++;
        }
        ans += f * count;
    }
    return ans;
}

int CantorStatus(Status status) {
    int a[10];
    for(int i=0; i<3; i++)
        for(int j=0; j<3; j++)
            a[i*3+j] = status.a[i][j];
    return Cantor(a, 9);
}

void bfs() {
    int target = CantorStatus(ed);
    st.step = 0;
    cantor.insert(CantorStatus(st));
    q.push(st);
    while(!q.empty()) {
        for(int i=0; i<4; i++) {
            Status front = q.front();
            int x = front.x + dx[i];
            int y = front.y + dy[i];
            if(x>=0 && y>=0 && x<3 && y<3) {
                // front移动一步后的结果
                front.step++;
                int temp = front.a[front.x][front.y];
                front.a[front.x][front.y] = front.a[x][y];
                front.a[x][y] = temp;
                front.x = x;
                front.y = y;

                int ct = CantorStatus(front);
                if(cantor.count(ct))    continue;
                if(target == ct) {
                    cout << front.step << endl;
                    return;
                }
                q.push(front);
                cantor.insert(ct);
            }
        }
        q.pop();
    }
}

int main() {
    string str, eds;
    cin >> str;
    for(int i=0; i<3; i++) {
        for(int j=0; j<3; j++) {
            st.a[i][j] = str[i*3+j] - '0';
            if(st.a[i][j] == 0) {
                st.x = i;
                st.y = j;
            }
        }
    }
    eds = "123804765";
    if(str == eds) {
        cout << 0 << endl;
        return 0;
    }
    for(int i=0; i<3; i++)
        for(int j=0; j<3; j++)
            ed.a[i][j] = eds[i*3+j] - '0';
    bfs();
    return 0;
}